package com.zhouyu;

import com.zhouyu.service.User;
import org.springframework.beans.factory.SmartFactoryBean;
import org.springframework.stereotype.Component;

/**
 * 在Bean 的初始化阶段，循环遍历所有的RootBeanDefinition的时候，会判断是否为FactoryBean
 * 如果是，则会判断是否实现了{@link SmartFactoryBean}
 * 如果实现了，那么其isEagerInit 方法是否返回True，
 * 如果是，则会提前调用getObject 方法进行其中的对象的初始化。
 * @author by gang.Li 2022/3/27 23:14
 */
@Component
	public class UserFactoryBean implements SmartFactoryBean {

	/**
	 * 提前初始化getObject 中的对象。
	 *
	 * @return boolean
	 */
	@Override
	public boolean isEagerInit() {
		return true;
	}

	@Override
	public Object getObject() throws Exception {
		return new User();
	}

	@Override
	public Class<?> getObjectType() {
		return User.class;
	}
}
